#include  "mid_lcd.h"
#include  "mid_key.h"
#include  "mid_beep.h"
#include  "mid_bus.h"
#include  "mid_timer.h"
#include	"driver.h"
#include  "app.h"


static void disp_ui_v(uint8 dis1, uint8 dis2, uint8 dis3)
{
		if(UIoperate.CodeFlag)
			mid_lcdbianma(DISPON);
		else
			mid_lcdbianma(DISPOFF);	

		if(UIoperate.SetFlag)
			mid_lcdshezhi(DISPON);
		else
			mid_lcdshezhi(DISPOFF);
				
		if(UIoperate.Wrong)
			mid_lcdcuowu(DISPON);
		else
			mid_lcdcuowu(DISPOFF);		

		if(UIoperate.Chongdian)
			mid_lcdchongdian(DISPON);
		else
			mid_lcdchongdian(DISPOFF);
		
	  if(UIoperate.LockFlag)
			mid_lcdsuoding(DISPON);
		else
			mid_lcdsuoding(DISPOFF);			
		
	  if(UIoperate.ContinuesFlag)
			mid_lcdlianxu(DISPON);
		else
			mid_lcdlianxu(DISPOFF);

	  if(UIoperate.Correct)
			mid_lcdzhengque(DISPON);
		else
			mid_lcdzhengque(DISPOFF);		
		if(UIoperate.Addr)
			mid_lcddizhi(DISPON);
		else
			mid_lcddizhi(DISPOFF);
		if(UIoperate.RdFlag)
			mid_lcdduchu(DISPON);
		else
			mid_lcdduchu(DISPOFF);
		if(UIoperate.WrFlag)
			mid_lcdxieru(DISPON);
		else
			mid_lcdxieru(DISPOFF);
		
		mid_lcddisp_line2(dis1, dis2, dis3);
		UIpos[0] = 15;//F
		UIpos[1] = UIoperate.NowSet/10;//
		UIpos[2] = UIoperate.NowSet%10;//		
	  mid_lcddisp_line1(UIpos[0], UIpos[1], UIpos[2]);
	
		mid_lcdp4(DISPON);
		strLcdD.frush = 1;		

}
			 
			 
void UI_OutShortCheckVoltage(void)
{

			cmdPROBUF tmp;
      if(GetKey(KEY_PRESS_UP))   
			{						
							BEEP_ON();
							UIoperate.Wrong = 0;
							UIoperate.TestFlag = 0;
							UIoperate.Data = 0;
							UIoperate.Correct = 0;
							UIoperate.Addr = 0;
							UIoperate.RdFlag = 0;
							UIoperate.WrFlag = 0;				
							switch (valuekey.val)
							 {
									case 0x21:										//READ     
											BUS_WORK();
											Voltage_time = 8;
											delay_ms(30);										
											tmp.ch = 0;
											tmp.cmd = 0x1e;
											tmp.addr = 0;
											write_cmfbuf(&tmp);
											write_cmfbuf(&tmp);
											UIoperate.LastOperate = 0;
											ADDR[0]=ADDR[1]=ADDR[2]=0;
											UIposition = 0;
											disp_ui_v(ReadShortCheckVoltage/100, ReadShortCheckVoltage/10%10,ReadShortCheckVoltage%10);	
											break;									
									
									case 0x23:  //0
									case 0x35:  //9
									case 0x33:  //8
									case 0x31:  //7
									case 0x45:  //6
									case 0x43:  //5
									case 0x41:  //4
									case 0x55:  //3
									case 0x53:  //2
									case 0x51:  //1												
										
											ADDR[UIposition++] = ConvertKey(valuekey.val);		
											if(UIposition == 1)
											{
												UIpos[3] = 0;
												UIpos[4] = 0;
												UIpos[5] = ADDR[UIposition - 1];
											}else if(UIposition == 2)
											{											
												UIpos[3] = 0;
												UIpos[4] = ADDR[UIposition - 2];
												UIpos[5] = ADDR[UIposition - 1];
											}else if(UIposition == 3)
											{													
												UIpos[3] = ADDR[UIposition - 3];	
												UIpos[4] = ADDR[UIposition - 2];
												UIpos[5] = ADDR[UIposition - 1];
												ADDR[0]=ADDR[1]=ADDR[2]=0;
												UIposition = 0;
											}																							
											ReadShortCheckVoltage = UIpos[3]*100 + UIpos[4]*10 + UIpos[5];											
											disp_ui_v( UIpos[3], UIpos[4], UIpos[5]);
											break;											
											
									case 0x25:     								//WRITE									
											BUS_WORK();
											Voltage_time = 8;							
											tmp.ch = 0;
											tmp.cmd = 0x59;
											tmp.addr = 0;
											tmp.dat = ReadShortCheckVoltage;
											write_cmfbuf(&tmp);
											UIoperate.Correct = 0;
											ADDR[0]=ADDR[1]=ADDR[2]=0;
											UIposition = 0;
											disp_ui_v( UIpos[3], UIpos[4], UIpos[5]);	
											break;											
											
									case 0x27:     
											break;

									case 0x37:      							//LIGHT
											if(UIoperate.Backlight == 0)
											{
												UIoperate.Backlight = 1;
												LCDBLACKON(); 
											}
											else
											{
												UIoperate.Backlight = 0;
												LCDBLACKOFF();											 
											}
											break;

									case 0x47: 										//TEST
											UINUM = 1;						
											break;									
								
									case 0x57: 					 					//SET
											UINUM++;										
											UINUM = UINUM % UINUM_MAX;										 
											break;									
									
									case 0x11: 					 					//ESC
											UINUM--;
											break;
									
									case 0x13: 					 					//CONTINUE
											break;
									
									case 0x15: 					 					//OK
											UINUM = Set_UINUM +2;
											UINUM = UINUM % UINUM_MAX;
											break;
									
									case 0x17: 					 					//CODE											
											UINUM = 2;
											break;				 
							 }			 											
	}
	
		if(strLcdD.UIinit)
		{
			strLcdD.UIinit = 0;
			UIoperate.Correct = 0;
			UIoperate.ContinuesFlag = 0;
			UIoperate.Wrong = 0;
			UIoperate.Addr = 0;
			UIoperate.TestFlag = 0;
			UIoperate.Chongdian = 0;
			UIoperate.Data = 0;
			UIoperate.SetFlag = 1;
			UIoperate.CodeFlag = 0;
			UIoperate.LockFlag = 1;
			UIoperate.NowSet = 23;
			UIoperate.RdFlag = 0;
			UIoperate.WrFlag = 0;
			ReadShortCheckVoltage = 0;
			UIpos[3] = 0;
			UIpos[4] = 0;
			UIpos[5] = 0;
			ADDR[0]=ADDR[1]=ADDR[2]=0;
		}		
		disp_ui_v(ReadShortCheckVoltage/100, ReadShortCheckVoltage/10%10,ReadShortCheckVoltage%10);		
		strLcdD.UIfresh = 0;				

	}

